{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "9b1a43a8",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\liangcheng\\AppData\\Local\\Temp\\ipykernel_8140\\2569069297.py:32: FutureWarning: 'w' is deprecated and will be removed in a future version, please use 'W' instead.\n",
      "  df = df.resample(freq).agg({'open': 'first', 'close': 'last'})\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "涨跌幅大于 1% 概率：0.4145\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABvwAAAJNCAYAAAD9F9LdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAACgy0lEQVR4nOzdd5wU9f0/8Pcd5ZAuRRAFQRTEgt0oKvbEBEVFo7FEJRpb7B1LFKNo7JpYIsZoVPKNwd6NPdYoWKIiEZWionIgIOXuKJ/fH/xuw3l3cIeHuwPP5+NxD73Z1858ZnZ2b3dfzExRSikFAAAAAAAAkEnF+R4AAAAAAAAAsOwUfgAAAAAAAJBhCj8AAAAAAADIMIUfAAAAAAAAZJjCDwAAAAAAADJM4QcAAAAAAAAZpvADAAAAAACADFP4AQAAAAAAQIYp/AAA4Ac2f/78GDduXEydOjXfQ6nVpEmT4u23346FCxcul/kvXLhwuc07K+bPn5/vIcT48eMbbF7nnntuXHLJJQ06zx9KRUVF3pa9cOHC+PDDD2PKlClVppeWli71vvPnz4/p06c36L40c+bMKCsrq1P2wQcfjJdffrnBll0ppVRt2qhRo77XPL/55puYOHHi95oHAAAUsqJU0ztpAADgeznllFPik08+iQcffLDabZMmTYpu3brF2WefHZdeeulS5zV9+vT45ptvomnTptG0adMoKipa6n3mzZsXFRUV0bRp01h99dVz01NKcdFFF0VpaWn84Q9/qPX+xxxzTPzpT3+KefPmRePGjZe6vPqYO3duHHjggdGrV6+4/PLLG3TeWTJ48OBIKcWtt976vbfx/Pnz4/zzz4+f/OQnseOOO+amV1RUxPjx42P69OlRWloakyZNinHjxsXYsWPjtddeiylTpsTrr78eW2211fda/vjx46NXr16x6qqrxqhRo2LNNdf8XvP7oR111FExffr0uPPOO6OkpCS+/vrraNKkSTRq1CiKi6v/O9kmTZpESUlJtenXXXddvPHGGzUuY6211opLLrmk2vQ5c+ZEixYt4qKLLorzzz8/IiJmzZoVG2ywQRx00EExbNiwmD17dowZMyaaNWsWTZo0yc1v9OjRsd1228UzzzwTO++8c0RElJeX1zi2yZMnx4IFC6pMKy4uji5dulSZdtttt8WRRx4Zo0ePjk022aTGdanUp0+f2GabbeK2226LiIiysrK46667oqSkpMbXqZRSlJWVRYcOHWKfffapdb4///nPo0uXLnH11VdHo0aN4t5774399tsvnnjiifjJT36yxDHV5o9//GOceOKJce2118aJJ564TPMAAIBC1rCf3AEAgIiI+Pjjj+O9996r8bbKL+Nr+lK+JrfffnuccsopyzSOfffdN0aOHJn7vaioKL788su4+eabY/31149jjz22xvs1a9YsGjVq1OBlX3l5eey5554xYcKEOpWdK7Lf/OY3sffee8cvfvGL+Pvf/x6NGjVa5nmVlpbGPffcEzfccEM8//zzsdlmm0VExNixY6Nv3765XJs2baJz586xxhprxO677x6dO3eudmRZpfnz58enn34aq6yyylILvFNPPTXmzZsX11133RKz8+fPj4qKiqioqIhWrVp9r3VuKDNmzIi///3vccghh+Sek7169YoZM2bUep9zzz03Lr744mrTX3/99XjkkUeif//+Vaa/8cYb0bNnzxrnVdPrQXl5eay33npx2WWXxZgxY+LEE0+MXXbZpdqyVllllYiI3H/Lysqie/fuMWzYsPjVr35VJb/pppvGV199VWVa27Zt45tvvokXX3wx3nzzzTjkkEOiXbt2kVKKtdZaq9b1r9S8efPcsivHfccdd+ReP74rpRRz586NDTfcsNbC76233oqRI0fGIYcckpvH3nvvHb17947TTz89dt5551zpWR9/+9vfolWrVnHIIYfU+74AAJAFTukJAADLQePGjWv9Urpp06ZV/ru4//73v9WmHXPMMTFjxoyYO3duLFy4MFJKcfDBB8daa60VKaUaf58/f36UlZXFHXfcUW1+f/zjH2P77bePE088Mf7973/XOMZGjRotlzLmqKOOikmTJsVLL70Uffr0qXb7e++9Fz/96U+jTZs2scYaa8S1115b43xeeuml2H777aNly5bRs2fP+Nvf/lYtM2fOnDj99NNjzTXXjMaNG0eHDh3i5JNPjvLy8iq5iy++OIqKiqr97LHHHlVyr7/+egwcODBWXXXVaNWqVey5557xzjvvLHF9FyxYENtuu22Vo+4qbbHFFvHSSy/Fa6+9FmefffYS57M0nTt3jn/+85/RrFmz2GOPPeLzzz+PiIiWLVtGRMTw4cNj7ty5MX369Pjwww/jmWeeib/+9a9x+eWXx4ABA6rN7+qrr44OHTpEr169omvXrtG3b98YPXp0jcv++9//Hvfff39ERBx44IE1bsvKnyZNmkSLFi1i1VVXjTFjxnyvdW4oV111VbRo0SKGDRsW8+bNi2nTpsW4ceNi1qxZ0bx587j77rtj7ty5MXfu3HjsscciImL33XevcV5NmjSJbt26xSOPPFLlZ8stt6xSnu++++6x8cYbR0TknmeLH0nYvn37eOKJJ+KKK66ImTNnxjbbbBOzZs2K+fPnx1tvvRURiwrCyteQyteaESNGxJQpU2LrrbeuNrZmzZrFFVdckXuN+Nvf/hbNmjWLiEWnyzz99NMjInLjbN26dY3r+N5778Vll10Wl112WXz11Vfx1ltv5X6fMmVK/Otf/4p//vOf8cQTT1T7efLJJ+PFF1+MG2+8sdbH46KLLoqSkpIqhWqjRo3iqquuivfeey/OO++8Wu/79ddfx6hRo+K9996LMWPGxIcffhgffvhhPPjgg/HKK6/EwIED4+uvv85NX/zn/fffj7fffjs++OCDWucPAACFzBF+AACwHBQXF9d66s3KL9S/e6rAESNGxJFHHhmnnHJKlVP/NWvWLPfFfF1VFnY1HUXYqFGjuPPOO+Pvf/97bLHFFjFhwoTo3r17jfP57jpce+21cdJJJ9VrLJXuu+++uPfee+Ott96KTp06Vbt97Nix0b9//yguLo6zzz47pk2bFqeddlo0a9YsjjnmmFzuX//6V+y2227RpUuXGDp0aIwZMyYOOuigaNu2bfz0pz/N5Q488MB47LHH4vDDD48f/ehH8cQTT8R1110X06ZNi7/+9a+53GuvvRabbrppnHrqqVXGs/iRav/85z9jwIABsd5668XFF18cc+fOjWuvvTa22WabePrpp6Nfv341rvNll10Wr7zySuywww413t69e/d44IEHYtttt40999yz2pFh9bH22mvHPffcE/vvv3+MGzcu1lhjjVwR1KVLlzrvQ3/5y1/i9NNPj9/+9rexzz77xLhx4+KEE06IgQMHxkcffVTliK6PP/44jjrqqGjfvn289NJL0aFDh9xtTz31VBx88MHxxBNPxOabbx4R/zvV7Lx586Jbt27LvK4N5dNPP42rr746br/99mjTpk3cddddcdppp+XWZcGCBdGiRYsqxVjr1q1rLNQiqj9fFrf4832VVVZZ6uNRVFQUp59+epx22mk1zrdp06ZVTtGZUoprr7029ttvv1h//fVrzNc2bcKECdG0adM49NBDc0d8DhgwIBYuXBgVFRVxxBFHxC9/+cuIWFT4DRkyJI4++uioqKiImTNnxvjx4+PWW2+NzTffPNZZZ51Yd911Y9y4cTWu1//93//FAQccUONt999/fzzwwANx1llnVTvCcMCAAXHAAQfEFVdcERtttFGNR+o99NBD8etf/7rGeUdE3HXXXXHXXXfVentExA477BDPP//8EjMAAFCIFH4AAJBnEydOjNNOOy1GjhwZa665ZvTq1ataZu7cuTF79uwqhcrSfP7557HGGmvUeNtaa60VZ555ZkT870v/YcOG5U6zd/nll8fdd9+dO4Jt+vTpsc0229S7eKyUUopzzjknhgwZEuuuu26NmVNPPTVmzZoVb775Zu40lE2bNo0zzzwzfvnLX0aLFi0iIuLYY4+N5s2bx0svvZS7/tjcuXPj+OOPj48//jgiIh577LF46KGH4r777sut05FHHhk77rhjjBgxIq6//vpo27ZtRCwq/I455phaT/WXUorjjz8+unTpEq+++mpuHD//+c+jT58+ceaZZ8ZLL71U7X5vvfVWDB06dKnXXNxiiy3i2GOPjSFDhsTLL7+8xOzS7LjjjvHJJ5/kjuyrLITqevrYioqKOOecc+LXv/51XHjhhRERsfHGG8esWbPi8MMPjzfeeCNXSs6YMSP23XffmDlzZjz00EOx3nrrVZlX5RFibdq0qdd++0OZPn167LvvvjFo0KDYb7/9ory8PC688MLo3bt3rLPOOhGxaPstXpS9+uqr0b9//1pPdbtgwYKYP39+fPbZZ1Wml5WVRUop93ujRo2WuF+UlpbGggULolOnTrnchx9+GBGLrpcYsej0mYuP4+GHH4733nsv7r777hrnWVFRUeu0t956K/r16xeHH354jB49OkaPHh2HHXZYrvDbcMMNc/ep3B4333xzvPnmm7H11lvHH//4x7j99ttzBXOLFi3iqquuiqOOOqrK8tZcc81aX0O++uqrOOqoo2LNNdeMc845p8bMzTffHKNHj47BgwdHeXl5HHHEEVVu/+Uvfxm/+MUvoqSkJHf9xT/96U9xzDHHxIgRI+LAAw+Myy+/PMaPH7/EowwBACCLFH4AALCczJw5M3c0SUop5s2bF61atcodhfbFF1/EySefHLfccks0a9YsLr300jjppJOqHEEVsahY2WCDDeInP/lJ/PnPf67TsktLS6Nnz55x1llnxdChQyNiUUHw6aefRrNmzaJx48bRvHnzaNeuXe5L+tVXXz1X2rRr1y6Kiopyv5eWlkZELPM1/V577bX4+OOPa71m4IwZM+LJJ5+MgQMHVrnm3PHHHx/Dhg2LJ598MgYNGhTvv/9+vP/++3HKKafkyr7K3IgRI2L06NGx2WabRevWreP666+vdp2wjTfeOF544YUoLS2Ntm3bxn//+9+YOnXqEo+s+/jjj+O///1vnH/++bmyL2JRafqjH/0oXn/99Wr3KSsri0MOOST69u1bp7LtxBNPjJ49e8ZHH31UayFam7lz50ZRUVE0bdo0iouLc2Vf5TgiIleCfNeCBQuivLw8tt1223j44YdjwYIFceutt8amm25aJVd538rTT86ePTt+9rOfxTvvvBNnn3127Lnnnksc48KFC2PhwoW5a/g1a9asxiPOfkgXX3xxvPXWW/Htt9/G2muvHdOnT4+ysrJ4/PHHo6ioKFfeVT4/Kioq4oUXXojf/e53tc6zvLw8xo4dG127dq12249+9KM6j+3YY4+NJ598Ms4///w4+eSTo3HjxtVOgVtWVpZ7rBcuXBjnnntu7LfffrHRRhvVOM+ysrI444wz4owzzshNa9u2bXz77bfx73//O2688cb4xS9+EausskpcccUVceCBB9Y4n+8emVyThQsXxjfffFOt+Kw8JfF3VVRUxIEHHhjTpk2LZ555ptbTibZt2zaefvrp2GWXXeLII4+Ml19+Oa699tpcvqSkpMp+/vHHH8fpp58ehxxySG593n777Xj77beXug4AAJA1Cj8AAFhOJk+enDsNXqWNN944V/j94Q9/iI4dO8bZZ58dJ510UrRp06bG+bRp0yY23njjuOuuu+Kiiy6q9ai9xQ0fPjzKy8tjm222yU379NNPq5QGhxxySNx55511+gK/Un2yi3v11Vdj0003jXbt2tV4+5gxY2LBggWx0047VZm++uqrR5cuXWL06NExaNCg+M9//hMRUS232WabRVFRUa7w22677WK77bartpzXX389WrdunTuF6auvvhoREddcc00cdNBBUVZWFptvvnmcffbZucdpxowZERHRsWPHavObM2dOlRKw0pAhQ2L8+PExevToOProo5e0aSJi0ek4u3fvHq+99lq9C78zzjgjbrjhhtzv11xzTZx88slVxn7GGWfkjhx9880345JLLonLLrssevbsGfPmzcs9Lqusskq1a/rNmTMnrr/++ujcuXPu1JzNmjWLCy+8MB5//PHcNRBrs/g+WOkf//hH7LfffnVex5RStGvXLgYOHBh33HFH3HvvvbHffvvFkCFDYtiwYXHNNdfEqaeeGh999FHu6LylGTx4cMyZMye22GKLKCsri+OPPz6uv/763PafPXt2bv0jIl588cWYPXt2nHrqqXHqqadGnz59ql3vbejQoXHiiSdGaWlpXH755bHrrrvGj3/844iIGveT2lxyySUxffr0OPPMM2PevHlx1llnRUTE9ddfHyeccEIu995770XEouflNddcU+00mIt74403YsGCBTFs2LB499134//+7/+iuLg4vvzyy9hoo41yp52t6UjAxdXlNaCoqCiuueaauOaaa6rdtvhpSCMWneb14IMPjueeey6OPvroaN26dbz77rtLXM4tt9wSZ511VvzlL3+JRx99NP785z9Xu+ZmaWlpDBgwIPr06RO33HJLbvqSrq8KAABZpvADAIDlZN11141///vfERG5o5sWP7rl0EMPjZtvvrnaEX01Offcc+Oxxx6L66+/Pn7/+98vMVtWVhZ/+MMfYrfddovdd989N71nz54xfvz4KCkpia222ip3ar3Ksmbw4MExePDgKvP6bpGztNNT1ubrr7+uckTed33zzTcRsaj4+q5OnTrlTmNYW66kpCTatm2by9XkxRdfjNdffz1OOumk3JGKlafQTCnFhRdeGHPnzo1bbrklBgwYEI8++mj89Kc/jR49ekSTJk3i6aefrlK2fPTRR/HWW2/F3nvvXWU5zz77bFx33XVx0003Re/evWsdz3etscYa8fXXX9c5X+mCCy6Is88+O2bNmhV9+vSpcoTTl19+GRER++67b/Ts2TMi/neU3g477FDrtegiFp0S9oorroj77rsvysvL48EHH8ztM40aNYrddtstdtttt4hYVKKccsopudPERvzvGn6PP/54bLrpprmjXCsqKmq8huOSFBUVxRZbbJEr2N59992I+F/h9cEHH0S7du3qXPZFRGywwQZx4403xvz582OnnXaKPffcM44//vjc7ZWPxa233hoDBw6MzTffPMaMGRMREXvuuWfsuuuu1eZZWah/8cUX8eqrr8ZPfvKTGovnpenVq1f885//jDvuuCP23XffXAm3+JFvQ4YMyZ1y97e//W21Mn2nnXbKnfJy9uzZsWDBgujWrVu0bt06mjVrVuW6nZWvUxFLL/zq8hpQOa66OOmkk2LkyJFx+OGHR8uWLXOl8tKMHz8+/vjHP8bf/va3akdPTpkyJX72s5/F2LFjIyKiefPm1e5f03rUpzAGAIBCo/ADAIDlpLi4OHeduMXNmjUrIhaVA3Up+yIi+vXrF/369Yvhw4fHBRdcsMTsLbfcEpMnT44HH3ywyvQmTZrkjgAqLi7OFUOVX3zX5Rp+y6px48Yxc+bMWm9fuHBhRNR8FFTz5s1j+vTp9cp915w5c+Loo4+O9u3bx/nnn5+bvvPOO8dWW20VRx55ZG7ar371q9hggw3ikksuiZ/+9KfRrl27GDx4cNxyyy1x2mmnxa9//euYMGFCnHzyyTFv3rwqpymdMWNGHH744bHnnnvW6ci+xc2YMWOZTplaeeRh5WlXFz9V5kcffRRFRUVVytaaTqlYk9mzZ8dbb70VX331VXTu3Dl3xFtNKk8Ru/i1+irLqbZt29a74KvJVlttFddff32klOI///lPDBw4MFf8jRkzJrbccstlmu9xxx0Xn3/+eTz00ENVpn/66acRsejaeC+//HJsu+22seqqq8akSZNi3Lhx1Qq/V155Jb799tsoKSnJ7YczZsyI559/Ppdp1apVnQutiIjDDjssIhaVrxGLHpNx48ZFcXFxrLHGGrkCfM0114xRo0bFV199FYcddliUl5dXeY488MADccghh8S3334bEYueD++8806UlZXFhAkTYtiwYbnr3lXuR9ttt12klGLBggVRUVERV155Zey8885LLfz69u2bOxK3NkOHDo3f/va3ERHx+9//Prp27RpnnnlmjBkzJnbddddo0qRJHH/88bFgwYIqR+dFRFx11VXxxBNPRLdu3eKKK66Ic889t8rr7Icffhh77LFHzJw5MzbffPMoKyuLkSNH5m4fMmRIfPjhh3H//ffnpt1///1xzjnnLPM1SgEAoBAo/AAAICNOOumkOOCAA+If//hHrZlZs2bFsGHDYtddd61zAVJZANXlGn7Lqlu3bnH77bfXenvlETiVhd53x1d5Lbq65r7rN7/5TYwdOzYeeOCBaN++fW76L37xi2rZ9u3bx7777hs33nhjzJ49O1q0aBE33nhjtGnTJm655Za4+uqrc9kdd9yxyulFf/Ob38S8efPi1ltvrXVda7Jw4cIYN25cdOvWrV73q0nlEXwRi45g7NGjR5Viua6FX69eveKFF16ICRMmxD777BMDBw6MMWPG1DjGZT3Va31stdVWMWvWrJg4cWK8++67MWzYsHj44Yfj22+/jTFjxsRvfvObes1vzpw5cdxxx8Udd9wRxx57bFxxxRUxbty42GKLLeLMM8+M0aNHR4cOHWL77bePE044Id54441o1KhRPPzww9G0adPcKTAr/fa3v41nnnmmyrTvntZy2223jZdeeqnOY/zkk09ijTXWiKlTp0ZE5NaxXbt2MXXq1HjvvffiT3/6Uxx11FHxwgsvxNChQ2Po0KHViuPKx7/yv6NHj45tttkmmjRpEs8//3wcdNBBuWtAVl4ntH379rHrrrvGwoULo6KiItZcc82IqPm5t7hmzZrFoYcemrt26JZbbhm/+tWv4thjj40FCxbEOuusU6VYa9WqVQwZMiQiIjbccMPYcMMNI2LR0bzbbrtt7LjjjlXmf91118Xqq6+eKx4XL/tuvvnmOO2006J169bxzDPPxCWXXBLjxo3LvY5FLDpFcklJSZVpq6++ekREna63CQAAhWr5fyoDAAAaxKBBg2K11VaLF198sdbMzTffHF999VWce+65dZ7vd6+ptSRL+7K/Nttvv318/vnn8cYbb9R4e+V1CSdMmFDttilTpuSOFqstt3Dhwpg6dWqVUx5WuuGGG+L222+Pc845JwYOHFin8VYeHTV58uSIWFSiXX755TFt2rT45ptvYs8994zi4uIq5d/IkSPj7rvvjssvvzyKioqitLQ0SktLY968eTFv3rwoLS3NXQ/uux5//PGoqKiIbbfdtk7jq4spU6bEE088Ue3IzMrCr66P5VprrRVXXXVVzJkzJ3cU3LRp02LixInx5ZdfxrRp0yJi0alkp0+fnvupPCJw1qxZVaZPmzYtvvzyy5gwYUKtBW1NKk/b+MYbb8Qnn3wSO+20U3Tu3DmefvrpmDZtWrXTOi7NO++8E3fccUdELLqm4Kuvvhpt2rTJneb00UcfjR122CEuv/zyeP/993On/7zmmmtiv/32q3bNzTvuuCPGjx8fkydPjttuuy0iIh577LGYPHlyTJ48OQYNGpQrlBYuXFin4vW3v/1t7L///tG3b9/cfnT++efXeGRwv3794ttvv41Ro0ZVu63yqM/KMni77baLOXPmxIwZM2LTTTeNM888M04++eQ48cQTY8aMGdG+ffsoLy+PE044IU466aQq14Bc2n7TqFGjaNWqVXTv3j26d+8ejRo1ilVXXTW6d++eO8J4aUeyTpw4Mb766qvYeOONq902efLkXPn4XWussUast9568corr8RGG220xGXUZFlPWQwAAIVA4QcAAD+QMWPGxO9+97tlvn/jxo3j1VdfzR2BU5OTTz45HnnkkWpHxSxJ5Rf4c+bMyZUy5eXlERG53ytPxzl//vxlGnufPn1iyy23jMsvv7zG23v27BmtW7eudvTTN998E+PGjcsdgbPJJptEUVFRtdy7774b5eXluVylxx57LE466aTYe++9q237adOmxc9//vN47rnnqo3nrbfeiqKioiqnqIxYdCTbuHHj4uGHH44jjjgiNt1009xtjzzySEQsujZjx44dcz+vvPJKvPLKK9GxY8da1//KK6+M3XffPVZbbbUab18WQ4YMiblz58avf/3rKtMrH8OaiptPP/00zjzzzJgyZUqV6ZWnDZ03b15ELDrl61prrRWrr756tG/fPubMmRO///3vY9VVV839VB49udtuu1WZ3r59+1h99dWje/fu8eabb9Z5fTp37hxdu3aNv//977HaaqtFx44dY6ONNop77rknIhYdAVgf22yzTTz++OMxadKkmDJlSjz33HMxfPjw2HTTTeOjjz6Kl156KY444ohYZ5114owzzohzzjknzjvvvPj444/j5JNPrja/NdZYI9Zaa63o3LlzfPbZZ1FcXBz9+/ePzp07R+fOnWPhwoW5wq+srGyp18qrqKiIRx55JLdejRs3jsaNG0dxcXGNhdmWW24Zq666atx999312g6Le++992LChAlx9dVXx3PPPZc7lejivrvfTJ8+Pa699tooLy+PRo0aRXFxcdxwww1RVFQURUVF8dVXX8WQIUOiqKgomjRpEhFLPyK08nTEix89W+nLL7/MFf/fteeee8aoUaOiR48edVpfAABYkSj8AABgORszZkwccsghseGGG8YNN9ywxOxzzz0Xjz76aK1lwNprr73E+zdu3DgGDBiwxExKKebNm5cr8SqPsvrNb36TK2X++Mc/Rnl5ee73nj17RkTkisBlcemll8bIkSPjzjvvrHZbo0aNYuDAgTFy5Mj44osvctNvvfXWSCnFbrvtFhERq622Wmy77bZx22235a6FGBExfPjwiIhcLmLRttxvv/1ik002ibvuuqva0Ttt27aNl156KS655JIqJcZjjz0WzzzzTPTv37/GazCec845seqqq8awYcOqTD/zzDPjn//8Z7Wfvn37Rt++feOf//xnHHroodXmd/XVV8e//vWvuPjii5e0+erlH//4R/z5z3+OPfbYo9qpJysLv5rK25YtW8bVV1+du75apfvuuy8iFh0ZFhFx3nnnRWlpacyYMSPmzJmTO/ps8Z/K0uall16qMr2ioiLmzp27TEflbbXVVnHffffljt6qLPy6d++eKyXrY5dddolp06bFrbfeGocffnistdZacd1118UZZ5wRffr0id133z0iIs4///zo2bNn/P73v48DDzxwiafLnTdvXtx+++3xox/9qMp19ObMmZP7vUWLFjUejbq4Z555JmbMmBEHHXRQndZl5syZsc8++8Ttt9++xOtlLm7y5Mkxfvz43O9XXHFFdOvWLQ4++ODYbrvtcqfaXFxl6VupVatWceWVV0bLli2jd+/eUVRUFIcffnhMmjQpJk2aFB07dowhQ4bEpEmTqiyrNmVlZXHddddFjx49cvvb4pZU+C1trLWpPEr1hzg1LQAALC+u4QcAAMvB119/Hd98800MHDgwHnnkkWjXrl1ccMEFccIJJ+QyNZ3S77bbbou77rornn322RqPbmkIF198cXzxxRdx9913x5577hmDBg3KnbpyaZZWUizJLrvsEqeddlocc8wxsfrqq8euu+5a5fazzz47Ro4cGT/72c9i2LBhMXbs2Dj//POjd+/eueIlIuKCCy6IH//4x7HXXnvF2WefHS+88ELcfPPNseOOO8Ymm2wSERFTp06Nn//851FRUREHHnhg3H///VWW1a9fv1h77bXjggsuiGOPPTa23Xbb2GabbeKzzz6L+++/P1q3bh3XXntttXV46KGH4p///GfcdNNN1Y7+W3/99WP99devdp9VV101IqLa+kZE3HvvvXHWWWfFJZdcUuVowWXx8ssvR0TEiBEj4h//+Efccsst8bOf/axaLqUULVq0qPFUrpXlTOU+8tOf/jQ++OCDuOGGG6oUXS1btoyWLVsucTyV5UmjRo2qHZHWpEmTKtdxq6utttoq7r333iqF38KFC+t9dF9ExN133x1HHHFElJeXR7t27WKXXXaJc889Nz777LN48MEH48knn8yVxBMnTsydonTy5MkxderUKteCXNxFF10Un3zySVxyySVVps+ZMyd3BOqSrsNZ6c4774ytt966Tkervffee7HXXnvFNddcE7fddltcfPHFVY4mrXys77777njjjTfi3Xffje7du8eECRPi1ltvjSOOOCIee+yxuPPOO+PGG2+MRo0axYUXXhg77LBDDBw4MPbbb7/cvHr37l3llMGNGjWKESNGxHrrrRerrbZaLFiwIFq0aJE77WZxcXG0bt061lxzzTodIXzKKafExx9/HCNGjKhW0k+bNi3Ky8vrXPgt7SjKm2++Oa699tr4+OOPo23bttVO0woAAJmSAACABjV9+vTUrFmzFBGpc+fO6eqrr06zZs3K3T5v3rzUuHHjtNVWW6UHH3wwPfzww+nhhx9Ot912W2revHnq2rVrmj9/fkoppU8++SRdeeWV6frrr08333xzGj58eBo+fHjaeuutU/v27Wv9/ZZbbkl//OMf0zXXXJNuv/323LLvv//+VFRUlDbZZJPUs2fP1KhRo3TxxRen2bNn/yDbZsGCBWnw4MGpcePG6Y477qh2+xNPPJFWX331FBEpIlKfPn3Se++9Vy3317/+NbVu3TqX22abbdJnn32Wu/2+++7L3VbTz1/+8pcq89pggw1S06ZNU5cuXdLgwYPTxx9/XG2Z5eXlaZ111klbbLFFWrBgQZ3XeYcddkg77LBDtenXXHNNKioqSqeddlqd51WbBx98MDVt2jS3fp07d05XXXVV+vLLL+s9r4ULF6abbropbbDBBql58+ZpvfXWS1dccUWqqKio13zuv//+FBHplVdeqfcYavP888+niEh//vOfU0opjRo1KkVEuvLKK+s9r5kzZ6bzzz8/vfzyy7nH8y9/+Utq3LhxGjJkSEpp0f46fPjw1KpVq7TNNtukxx9/PHXq1Cn16NEjPf7441XmN3/+/HTeeeeliEh77LFHWrhwYe62OXPmpK5du6YTTjih2ji++OKLFBHp6quvzk37/PPPU9OmTdNVV12Vm1ZRUZGmTp2aBg0alNZee+2UUkovvfRSiojUuHHjtNlmm6XPP/88HXbYYam4uDg99thjKaWUxo4dm4qLi3P7Rvfu3dOhhx6a/vznP6f//ve/KaWUnnrqqdSiRYu06667Vhn3r371q9S0adN033331bgN+/btm4477rgq0370ox8t8bkXEVXWq9K8efPSCSeckCIiDR48uMbl/eMf/0gRke65554ab/+uI444Iu27775Vph1yyCFpo402SimlNGbMmLTOOuukAw44IL344ot1micAABSqopTqcKVwAACgXq6++uqYOnVqnHvuudG8efNqt5933nlx+eWXVzvl3GqrrRZ33nln/PjHP46IiCeeeCJ++tOffq+xbLzxxvH222/Hl19+Gb169YrOnTvHW2+9FY0aNYohQ4bEDTfcEE2aNIktttgievXqFV26dIl27dpFs2bNoqioKMrLy2PmzJkxderUmDx5cvTs2fN7nX4ypRRXXHFFbL311tG/f/9qt8+dOzf+9a9/RePGjWP77bfPXffru2bMmBEvv/xytGnTJrbZZpvMnY7voYceismTJ8fRRx/9veez3377RcuWLeOqq66KefPmxS233BKjRo2KiIhevXpFr169Yu21144uXbpESUlJNG3aNGbPnh2lpaUxYcKEeP/992P06NG1butlcc8998QBBxwQL774Ymy//fYNNt/l5ZNPPontt98+9t5777j22mtj+PDhccMNN8S4cePirLPOivPPPz+aNGkSn3zySQwcODDef//9GDBgQDz00EMxZcqU2GOPPeLNN9+Mn/zkJ3H//ffHKqusElOmTImtttoqvvzyyygrK4sHH3wwBg4cGBGLntuXXXZZjBkzJr7++uu49957Y9CgQRERcdJJJ8X1118f48ePj7XWWisiFp0y9oorroiIiH333TdGjhwZ5513XlxyySUxaNCguPPOO6N58+Yxffr02HbbbaNFixbx4osvRrNmzeKYY46JTTbZJH7605/m5hcRUVpaGr/73e/ij3/8Y2y77bbx6KOPRqtWrXK3z549O7bbbrt4++234/rrr69yhHLEomtzbr/99nHLLbfkpm222Wax8cYb13i90gULFkT37t3j97//fZx55pkRsej14J577okLLrggxo4dG7/61a/iT3/6U5WjQk877bR4991349VXX42IiEmTJuWOnK2vX/ziF/HOO+/EmDFjlun+AABQqJzSEwAAloNTTz11ibdffPHFcdFFF8WcOXNy04qKiqJ5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4YYbxvbbb79cVgAAAAAAAABWZvUq/H784x/HrFmz4u23345nnnkmHnvssdhll10iIqJTp05x4YUXxogRI6JLly65+5xzzjlx8MEHxwcffBAtW7Zs2NEDAAAAAADASq64vnd45ZVXYsstt4yePXvGtttuG+PHj49zzjkn5s2bF88++2w0bdo0l508eXJsv/32seqqq8YVV1zRoAMHAAAAAAAAluEafocffni0aNEidthhh5g8eXK0atUqnnzyybjmmmuiZ8+esfrqq8cOO+wQQ4YMiccffzw+/fTTuPbaa6N3797Lax0AAAAAAABgpVWvwq9FixbxySefxMiRI2PcuHHx9ddfxxlnnBGbbbZZHHjggfHll19GkyZNYvvtt48DDjggpk+fHo899ljstNNOy2v8AAAAAAAAsFKr1yk9H3744Tj44IPj0UcfjUceeSRGjRoVs2bNilmzZsVtt90WM2bMiMaNG8cFF1wQ9913XyxcuDB+//vfR0ppeY0fAAAAAAAAVmr1KvyaNWsWbdu2jTZt2kTz5s1j/Pjx8f7770fHjh1jzJgxsd1228WCBQti6tSp8e6778bhhx8e5eXlcc011yyv8QMAAAAAAMBKrV6n9Nxtt92iX79+cfXVV8fee+8dkyZNii+++CL69u0be++9d3Tp0iXOPPPMWHvttaN9+/Zx5ZVXxjrrrBO77LJLHHXUUdGyZcvltR4AAAAAAACwUqrXEX7l5eXRv3//eOmll+Kbb76JddddN5566qk45ZRT4j//+U8MGjQoVllllXjppZdik002iV122SX69u0bG264Ydxxxx3Lax0AAAAAAABgpVWvwq+kpCQuvPDCePzxx6NLly7Rrl272GyzzeJ3v/tdXH/99VFWVhZlZWWx0UYbxX333Rdt2rSJiIj9998/2rdvv1xWAAAAAAAAAFZm9TqlZ0TEnnvuGRERv/rVr+JXv/pVREQcd9xx8Ytf/CI6dOgQM2fOrHafY4899nsOEwAAAAAAAKhJvY7wq02jRo2iY8eOUVRUFC1atKh2e1lZWUMsBgAAAAAAAPiOZS78vvrqqzrl3nvvvdhiiy3io48+WtZFAQAAAAAAALVY5sJvjTXWiH79+sWwYcPi/fffrzV36qmnxpdffhmtW7de1kUBAAAAAAAAtVjmwm/hwoWx5pprxk033RR9+/aNKVOmVMtceuml8fTTT8fw4cOjU6dO32ugAAAAAAAAQHWNv8+dr7zyyujWrVu8/fbb0bFjxyq33XTTTXHeeefFpZdeGvvss8/3GiQAAAAAAABQs+9V+FXaZJNNcv//wQcfxNChQ+PRRx+Nm266KY466qiGWAQAAAAAAABQg2U+pWelJ554Inr27Bn9+/ePnj17xkYbbRQlJSXxwQcfKPsAAAAAAABgOatX4XfrrbfGiBEjYsGCBblpLVq0iIEDB8bGG28c66+/frRp0yaeeuqp+Mc//lElBwAAAAAAADS8ep3S8+mnn4577703hgwZEkVFRTFlypTYfvvtY/vtt89lFixYECNHjowzzjgjnnjiibj33nujdevWDT5wAAAAAAAAoJ5H+P3f//1fTJkyJc4+++zYeOONY9ttt43jjjsupk6dmss0atQoDjjggHj77bdj2rRp8eMf/zgqKioafOAAAAAAAADAMlzDr23btnHsscfG6NGj44EHHojXX389evXqFV9//XWVXLt27eKJJ56ISZMmxXHHHddgAwYAAAAAAAD+p96F3+I22WSTeP311+Omm26K1VZbLZ599tkoKyvL3d6xY8e48cYb4y9/+Us89dRT33uwAAAAAAAAQFXLXPj9/e9/jz59+sTNN98c+++/f0yePDn23nvv6NOnT9x333253F577RW//vWvo2/fvg0yYAAAAAAAAOB/6l34zZs3L4477rg48MADY9CgQfHLX/4yIiJWX331GDt2bAwcODB++ctfxi677BLvvvtuRETcfPPN0blz54YdOQAAAAAAAFD/wu+8886Lu+66K/7v//4v/vznP0ebNm1yt62++upx3XXXxdixY6N58+ax+eabx69//euYNm1agw4aAAAAAAAAWKTehd/5558f//73v2P//fevNbPmmmvGww8/HFdffXW899570aJFi+81SAAAAAAAAKBm9S78WrZsGeutt16dsieccEK88sorUVJSUu+BAQAAAAAAAEtX78KvPl566aX4wx/+EN9+++3yXAwAAAAAAACstBrX9w6XXXZZfPPNNzUetbdgwYJYddVV4/TTT4+IiBdffDGuvfbaePDBB+OZZ575/qMFAAAAAAAAqqh34Xf33XfHGmusER07dqzx9uLi/x00eM4558SZZ54ZW2yxxVLnO3369Bg7dmz06tUrVl111foOCwAAAAAAAFZK9S78IiJ++9vfRr9+/apNX7hwYbz22msxatSoKCoqioiIOXPmxOzZs5c4v3/84x/x61//Orp27RqffPJJ3H777fHzn/98WYYGAAAAAAAAK5VlKvwiIr7++uu44IILYr311osePXrEuuuuG6uttlpst912UVRUFCmlXPYnP/lJrfOZMWNGHHfccfHiiy9G37594/bbb48zzjhD4QcAAAAAAAB1sMyF35dffhmvvPJK/Otf/4qFCxfG1KlTo7S0NDp37hyHHXZYHHPMMdG5c+coKiqKpk2b1jqfmTNnxrXXXht9+/aNiIjNNtsspk6duqzDAgAAAAAAgJXKMhd+ffv2jXfeeafKtOnTp8eTTz4Zt99+e2y66aZxxRVXxBFHHLHE+XTt2jUOPvjgiIiYN29eXHPNNbHPPvvUmC0vL4/y8vLc7zNnzlzW4QMA9TRx4sQoLS1dYmby5Mk/0GhqXvbo0aOXmOnQoUN069atTvOry/ouj/lFRIMul+WvrvtehMc2ixr6tQVWFA39dxIAAPh+lqnwe/zxx2PcuHE13tayZct4/PHH4/nnn4+DDjooJkyYEBdddNFS5/nOO+/EzjvvHE2bNo0xY8bUmLn00ktj6NChyzJkAOB7mDhxYvRer3eUzS1bYq5pSe1H9S9vg/YdFBXlFUvMNFulWYz9cOxSv3ys6/o29PxKSkoiiiLKy8qXmKvrcvlh/HzQoJhbsZR9r6QkiiJibvmSH9vmzZrFmLEe20JSl8fX48bKZuLEidGnd++YU7bkv2ueGwAA8MOpd+HXvXv3eOSRR6JRo0ZRVFRU5bYFCxZE+/btY9CgQbHjjjvGyy+/HFtttVVsttlmsffeey9xvn379o2nnnoqTjnllDjyyCNj5MiR1TJDhgyJU089Nff7zJkzo2vXrvVdBQCgnkpLSxeVVYMiokNtoYiK+5b8pfjyVFFesdTxld1XFqWlpUv94rGu69vQ8yu/7/+XQQ20XH4Ycysq4q6I6FPL7WMi4pD/X/QtNVfmsS00dXp8PW6sZEpLS2NOWZnnBgAAFJB6F3733HNPjBs3LjbaaKNaMwsWLIg333wzttpqq/j9738fv/nNb+LHP/5xNG/evNb7FBUVxeabbx533HFH9OzZM6ZPnx5t27atkikpKVn0L98BgPzoEBFd8j2IJWjo8eVrfoW+nammT0Rs1oA5CovHDWrmuQEAAIWjuL53GDt2bGyxxRZVpo0aNSratWuX+71Ro0YxaNCgePPNN+Pwww+Pfv36VTsasNILL7wQZ5xxRu73pk2bRlFRURQX13toAAAAAAAAsNKpd6u2yiqrVDvKrqSkJObPn19l2q677hovvPBCFBcXx9///vdYZZVVapxfr1694pZbbolbbrklJk2aFOecc078+Mc/jtatW9d3aAAAAAAAALDSWabD6GbNmhWNGjXK/Wy88cYxe/bsKtPuvPPOePLJJxctZAlH662++uoxcuTIuO6662KDDTaIOXPmxF//+tdlWxsAAAAAAABYydT7Gn4REa1atYpXXnkl9/tHH30Uv/zlL+O1117LTfv8889jr732ipkzZy71aL3ddtst3n///WUZCgAAAAAAAKzU6l34lZeXx7x582KDDTbITZs7d26Ul5dXmbbBBhtEkyZN4h//+EccccQRDTNaAAAAAAAAoIp6n9KzR48e8cgjj1SZtv7661c5uq/SmWeeGZtssskyDw4AAAAAAABYsnof4deqVavYeeedq0xr3rx5bLbZZtWy55133rKPDAAAAAAAAFiqZbqGX22eeeaZeP3116NZs2ZVpi9YsCDmzJkTF1xwQUMuDgAAAAAAAFZ69S78xo4dGzvvvHOUlJTkps2bNy9eeumlmDhxYrz66qvRuPH/ZvvQQw/FrrvuGi1atGiYEQMAAAAAAAA59S78Vltttbj44oujadOmERGRUorDDjssFixYEIMHD47BgwdXyRcXF8fw4cOjW7duDTNiAAAAAAAAIKfehd+qq65ardQ79NBDG2xAAAAAAAAAQN0V53sAAAAAAAAAwLJrsMKvqKiooWYFAAAAAAAA1FG9Tul51FFHxX//+98oLq7eEx500EGxyiqrVJuuCAQAAAAAAIDlp16F3+abbx5dunSJJk2aVJn+/PPPR79+/aJdu3ZVpqeU4oUXXvj+owQAAAAAAABqVK/C7+ijj65x+vnnnx+/+c1vYu211652229/+9tlGxkAAAAAAACwVA12DT8AAAAAAADgh6fwAwAAAAAAgAyr1yk9IyLefvvtOP3006N58+a5aUVFRRERMX/+/GjcuOosK28DAAAAAAAAGl69C79WrVrFJptsEs2aNcuVeX369Ik2bdrECSecELfcckuDDxIAAAAAAACoWb0Lv549e8aV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l7sy5Qp5bMsjV+hjLOSxrWw5+5RcQ+dWtn0qX8tdmXKFPLal5RYsWBDPPfdcXH755XH22WfH6aefHhdddFE88MADUVFRkZlcbSZMmBC77bZblJaWFnzuoYceirKyshpzjz76aHzyyScREQWfi4j48ssv48UXX6yW++yzz2LmzJmZyH3xxRex9tprx7nnnhvl5eXVspUKPXf33XfHmWeemft9xIgR8fbbb8eCBQsylZs2bVrceeedcemll8Zf//rXmD17do3rW+i52syfPz/uuOOOBs0ur9y9994bJ598cpx66qnx73//OyIixowZE/fee2+V14FCz1WaMWNGnH/++TFgwIA47LDD4umnn651G9Q1m69cpUL4myZXv3nla3x1zRX6ehTytpP7fvPK1/jqmivksa1suSztU3fddVdBf54r9NxSpRXYhAkTUtu2bb93pr7ZhlzuypQr5LEtj1yhj7GQx7ay5exTcg2dW9n2qXwtd2XKFfLYlpR76KGHUqdOndI666yTDj300HTaaael448/Pg0YMCC1b98+9ejRI/3nP/8p+NzS/OEPf0hbb711mjJlSkHniouL0/rrr58++eSTapnhw4endu3apQceeKDgc08//XRq06ZNOuOMM6rlRowYkTp27Jjuueeegs9NmDAhtWrVKh1yyCGpV69e6dlnn62WTykVdO6cc85Ja6+9dhoxYkRu2pZbbplatWqV2rRpk/r165dOOOGEgs+98sorqW3btqlfv35pl112SS1atEgdO3ZMN9xwQ1q4cGHuvoWcmzt3bo2PY6UZM2akoqKiemXzkYuI1KJFi3TooYem008/Pa255prpmGOOSR07dkwHHHBA6tatWxo+fHi6+OKLCzZ33XXXVVmv/v37px133DFdeeWV6cQTT0ytWrVKt912W0oppW+++aZO2XzlliTff9Pk6j+vfI2vrrlCX49C3nZy329e+RpfXXOFPLaVLZeVfSoiUu/evQv281yh55ZG4efLwoLJFfLYlkeu0MdYyGNb2XL2KbmGzq1s+1S+lrsy5Qp5bLXlvvrqq9SiRYt0++2313ifuXPnpuOOOy5tsskmBZ3bcsstU0opFRcXp6Kiohp/iouLU3FxcerRo0dB5yIiHX300alTp07pmWeeqbbOI0eOTGuvvXYqLi4u6NwGG2yQhg8fXuW2d955J/f/7733Xmrbtm3q06dPQef+85//5J43jz/+eFprrbXS4MGD07Rp06rcd/HnV6Hl2rZtW+2xev3119M666yTZs+enZ544olUVFRU8Lltttkm/elPf8plpk2blvr27ZtatmyZtt5669zjV8i5Zs2apf79+6dhw4aljz76KH3XjBkzUnFxcUop1Tmbj1xEpGuuuSY37Y033khFRUXp7bffTiml9Pbbb6euXbum7t27F2yuuLg4XXbZZWnOnDnp448/TptuummVAveZZ55JG264YUoppQ4dOtQpm69cIf9NW9lyEVGneaVU2O9ZCn096jq+Qt7GK1uu0Pcp+172civCPhURqVWrVgX7ea7Qc0vTuG7HAQIAwIpj1KhRscoqq8Rhhx1W4+3NmjWL008/Pfr27VvQuS222CIiIj799NOlrXLB69GjR1x11VXRv3//GDRoUBx77LFx0UUXRZMmTSIion///jFx4sSIiILOtWjRInbffffcer311lux2267xeTJk6NJkyaxwQYbRLdu3eKTTz4p+Fyl3XffPd5///0488wzY/31148rr7wyDj744GqPYaHlGjduHPPnz6+Sbd++fXz++efRvHnz6NevXxQVFRV87t13340BAwbkMquuumoMGjQo1lprrZgwYUJsv/32ccwxxxR07pBDDoltt902nn/++dh6662jZ8+eccwxx8RBBx0UJSUlERGRUoqIiHfeeSdeeeWVpWbzkYuI6NSpU+7/e/fuHUVFRdG9e/fc4zd16tRYsGBBweaaNm0ajz/+eFx99dUxaNCgaNasWRQVFeXu06tXr/j8888jIuLJJ5+MU089danZp59+Oi+5FeFv34ri888/jzXWWKNO2UJ+3Ap9PeozPgpDoe9TdWXfKxwrwj7Vo0eP+Pe//x2jR48uyM9zWcgt0VIrwQxzdEC2coU8tuWRK/QxFvLYVracfUquoXMr2z6Vr+WuTLlCHlttuWnTpqVOnTqlI488ssZTZrzzzjtpjz32SCeeeGJB584888ylrn9WFBUVpVmzZqWUUvrwww/TpptumtZdd9100003peeeey7tv//+adNNNy343P77758OO+yw9Nlnn6VPP/007bDDDqlLly5p8ODB6d1330233357atmyZdpnn30KNte4ceO01157paZNm6bDDz889zN48ODUp0+fVFRUlHbfffc0ePDgtN9++xVs7pRTTkm9e/dOzz77bCorK0sTJ05Me+yxR9p9991TSv87lWOh59ZZZ50qp2GcP39+2mmnndJDDz2UUkpp/PjxaeDAgQWfW/z2xx9/PO21116pU6dO6ZJLLkmfffZZKioqqva6UNfsD5WLiLTTTjulGTNmpJRSOvfcc1PPnj3TwQcfnF5++eV0xBFHpJ122iltscUWBZ1LadFprddff/1UVFSUzj777PThhx+mDz74IA0YMCAddNBBVbZHXbP5ygEA2VHb56qbb765Tp+/Cj23vD9vLs0KX/ituuqq3ztT32xDLndlyhXy2JZHrjJbKF98fp95FfJ2XhFy+XqdauhcIY9tZcutbPtUvpa7MuXqM69C+rv34YcfpoEDB6bmzZuntm3bpq5du6bVVlsttWvXLm233Xa502kWem5FUVxcnPuAk9KiL9z/9Kc/5U5vut1226UPP/yw4HOlpaVpwIABqXHjxqm4uDjtt99+acaMGenwww9PrVu3Tt27d08jR44s6Nzxxx+frrrqqtSiRYt0xx13LPGnkHNz5sxJRxxxRGrcuHEqKipKjRo1SrvvvnuaOHFiSimlWbNmpXXXXbfgc48++mhq3rx52nrrrdMBBxyQ+vTpk7baaqtUUVFR5TlU6LmaTJgwIR199NFptdVWq7HwW5bs8sxFROrRo0dq1qxZateuXdpyyy1TaWlpGjx4cFpjjTVS//790yeffJLeeeedgs5VWrhwYbr77rvTj370o9ypuLbffvtUWlpabTvUNftD5+bPn5+effbZ9Pvf/z6dddZZ6bTTTktDhw5N999/fyovL8/Np9BzWffggw/Weh3MRx55JH388cf1zuYrN3ny5PTCCy9Uy0yaNClXpleqa7Yhc3Wd1+eff5569OiRzjnnnFRWVlYtn5XcXXfdVeW6w3fffXd666230vz58zOTmzp1avrrX/+ahg0blu64444q7ye/q67ZfOVqM2/evDp9NimE3MiRI9NJJ52UTjnllPT666+nlFL64IMP0siRI6u8VhV6rtL06dPTeeedl372s5+lQw89NP3zn/+sdTvUNbu8czV9rrr55pvr9Pmr0HM/xOfNpVmhC79vv/023XDDDd87U99sQy53ZcoV8tiWRy6lRW/IOnbsuNQXxnzklpRZ/I/Piy++mG644Yal/pEqxNzivvu41famIR+5pWUW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l/bff/+06aabppRSnbP5yLVt2zYddthh6bPPPkuffvpp2mGHHVKXLl3S4MGD07vvvptuv/321LJly/TNN9+kAw44oE7ZffbZp8FyjRs3TgceeOBS53XwwQen/fbbLzVt2jQdfvjhuZ/BgwenPn36pKKiorT77runwYMHF3TulFNOSb17907PPvtsKisrSxMnTkx77LFH2n333VNK//tupJBzEVHlFIzz589PO+20U+5z7fjx49PAgQNTSimts846dcrmK7f47Y8//njaa6+9UqdOndIll1ySPvvss9z3VIWc22KLLdJOO+2UO639ueeem3r27JkOPvjg9PLLL6cjjjgi7bTTTgWfS2nR2XTWX3/9VFRUlM4+++z04Ycfpg8++CANGDAgHXTQQVW2SV2zP0Tu5ptvTk2bNq02xsX5Bzv/r707j4uq3v8H/pph3xcl5IIBIiBqqGmu4EJ43VKzXFBBNHC5aoT2VbOLG2plmpVmqBm4m0uGqNc1c0szveaCC+ICCooKyC6yvX9/+HOuEyBDYgz4ej4e83jozOt85rw5nzPz4Xw451Q8x/AsChER1BI3b96sMJOcnAx7e/sKc6+++qpG7WlK0/d9mbxsP5NXX31V9e/t27fjo48+wqVLlzBlyhQMHz4cJSUlmDRpEiwsLLBu3bpqy1WUuXLlCszMzBAdHQ1zc3OEhYXhhx9+QNu2bTF27FhERkbi+vXryM7O1urcgQMHVNujuLgY+/btw9KlS/Hbb78hJCQEgYGBqF+/PkpKSqo1V1HG1dUV77//PkJCQlT5rl27YsKECejduzcSExMREhKCixcv/u25Jk2a4JNPPqmwLRcXF/znP/9BREQE2rdvj3v37mHs2LEoKirCrl27kJWVBUtLS4SGhmp1bvjw4cjOzkZMTAyGDBmi2s4KhQK//fYbLl++jG7dusHOzu5vz/3jH/9Au3btKmxr165d8PPzg6GhIebOnYvCwkIMHz4c8fHx6NatGyZMmIDTp09j/Pjx6Nq1K8zNzf/WXHBwMAYMGID58+c/s61bt27B2toa2dnZMDExQVxcHAYPHoycnBxMnDgRjRo1QkREBOLj43HmzJkKc5s2bUJOTk6VtFWZXHR0dEVfLdVGk+/wzMxMdO3aFb1798bHH38MZ2dntdfPnTuHf//732jQoAE2btz4t+caN26MefPmPcdP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lJQUVQ35+fmYPHkyli9fjn79+sHd3R0bN26Eu7s77ty5g8LCQoSEhKBFixZqdZw8eRKLFy9GeHi4RjcNJSIiIiIiIiIiIiIiqqxaNeGno6ODrKws1dlrALB3715EREQgPj4eLVq0wEcffYTly5djz549SE5ORkFBAYyMjPCPf/wDLVu2RHBwMDp16gQASExMREBAAH799VeICN555x2sW7cO8+bNw969e9GwYUMsXLgQV69eRZ8+faCrqwsHBwfEx8fDy8sL0dHRUCgUAIDDhw8jJSUFwcHB2LFjR7k1dOnSpcIaFixYAKVSiTlz5lRYR1XWUNV1aLot0tPTERoaim3btkGpVCIoKAgLFizA6tWrVTVMnToVN2/eRP/+/XHp0iVYW1vj/v37GDt2LBYvXqy2bjdv3kRycjJ69OiBc+fOlVtD586dceHCBRgZGameu3z5MpYtW6ZWg66uLiIiIrB7925VHcbGxqo6AgIC4OrqWu77EBERERERERERERERPY9aNeH3ojx48AA6OjowNzcvN/Pw4UPs378fycnJaNiwIXx9fUtlsrKysHTpUkyePPlFrm6ZqqoGoHrr0MT58+eRnJwMFxeXcifa8vLyEBMTw7PuiIiIiIiIiIiIiIioxuOEHxEREREREREREREREVENpqzuFSAiIiIiIiIiIiIiIiKiv44TfkREREREREREREREREQ1GCf8iIiIiIiIiIiIiIiIiGowTvgRERERERERERERERER1WCc8CMiIiIiIqpGP//8Mw4fPgwAKCwsRH5+PkRE9frNmzcxZ84cFBUV/eX3CA8Px6BBg56ZWbhwIWbMmKH6f1FREUpKSsrMFhYWIi8v7y+vz4ULF3D79u1KL7d3796//J5ERERERES1GSf8iIiIiIiIqtHevXvh4+ODOXPmICoqCkZGRlAqlVAoFPjmm2+QnJyMadOmqfJTp07FF198ofr/p59+CoVCofb47LPPkJubi4ULF+L27dtQKpXIzc195nokJCTg6tWrqv/PmTMHOjo6pdpWKBTQ19dH48aN/1K9f/zxB7p06YJ9+/ZVarnc3FyMHTsWY8eOVZsQJSIiIiIiIk74ERERERERVat58+bh66+/xs6dOzFgwACkpKQgPT0dzs7O0NfXh6GhIZRKJXR1dVFcXIzVq1fD3Nxctby+vj7effddiAhEBIGBgdDX18f9+/fx4YcfIjU1Fbq6ujAzM3vmeujr60NPT0/1/4kTJ+L+/ft48OBBqcfdu3dx/PjxStd6+/ZtdO/eHfPnz0dgYKDq+QULFsDKygpffvml6rno6GjcvXtX9X8TExMcO3YMx48fx6xZsyr93kRERERERLWZbnWvABERERER0ctu3LhxGD16NHR1//crmlKphJ6enuqsOgDYtWsXHj58CH9/f1Xu6Um6p5+7efMmAGDSpElISEhAdnY2unXrhsLCQvj4+CAsLAwAMHnyZJw+fRrx8fEoLCyEr68vTExMsG3btiqvc9iwYQgKClKb7CsqKsLMmTMRGRmJ4OBghISEQEdHB7t378bbb7+ttvwrr7yC6OhotGzZEl27dkWHDh2qfB2JiIiIiIhqIp7hR0REREREVI3u3bsHANDV1UVJSQkyMjKQkZGBkpISFBYWqmW/+eYbBAcHw8jISPXcnzNPnjt37hwaNWqEgIAANG/eHM7OzvD390dAQIDaRNn58+ehVCpRr1491KlTBw0bNlSdvbdkyRIYGBigbt26qoeZmRl69uxZ6Tp/+eUXJCYmIjw8vFT9FhYWGDhwIExNTXHv3j0cOXIE3t7eZbbj6OiIuXPnYubMmZVeByIiIiIiotqKE35ERERERETV5MyZM3B0dMS0adNQUFCA2NhYWFlZwcrKCjdu3EBBQYEq+8cff+DAgQN4//331dooKCjAjz/+qDoTcNWqVSgoKMDBgwfRu3dv+Pv7w9PTE87OzggICMCIESPQpUsX1fK6urro06cPvL290bJlS/zf//0flMrHvyoaGRmhd+/eSE1NVT0WL14MQ0PDSte6YsUKBAcHq53FCAAlJSWq91MqlSgpKcGmTZswcODActvy9/fH77//joSEhEqvBxERERERUW3ES3oSERERERFVk6ZNmyI0NBRz586Frq4u+vbtCwDIzc2FsbExgMeTggDg6uqKTZs2oX79+mptTJ06FVOnTsWcOXNw9epVrFy5EgCwZs0auLu7A4DaxOGfPZlsK0t+fj6OHz+udmnNmzdvws7OrrKl4ty5cxg3blyp521sbJCeno4bN24gIyMDeXl5sLOzK/NSpU+YmJigefPmOH/+PJycnCq9LkRERERERLUNJ/yIiIiIiIiqia6uLj799FO0a9cOb7zxBm7dugWFQqG6ZOeaNWuwZcsW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",
      "text/plain": [
       "<Figure size 1800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import MultipleLocator, MaxNLocator\n",
    "import datetime\n",
    "\n",
    "# === 用户可配置参数 ===\n",
    "freq = 'w'  # 数据频率：'D' 每日, 'W' 每周, 'M' 每月, 'Q' 每季度\n",
    "bin_width = 0.2  # X轴的涨跌幅刻度单位（百分比）\n",
    "years = 3  # 回溯年数\n",
    "\n",
    "# === 日期处理 ===\n",
    "today = datetime.datetime.today()\n",
    "full_start_date = (today - pd.DateOffset(years=years)).strftime('%Y%m%d')\n",
    "end_date = today.strftime('%Y%m%d')\n",
    "start_date = pd.to_datetime(full_start_date)\n",
    "\n",
    "# === 获取数据，注意此处 df 的列名应为英文 ===\n",
    "# df = 你实际获取的 DataFrame，列名应该已经是英文：date, open, close 等\n",
    "\n",
    "df = ak.stock_zh_a_daily(symbol=\"sz300525\", start_date=full_start_date, end_date=end_date, adjust=\"qfq\")\n",
    "df['date'] = pd.to_datetime(df['date'])  # 用英文字段\n",
    "df = df[['date', 'open', 'close']]  # 保留必要字段\n",
    "\n",
    "# 筛选数据\n",
    "df = df[df['date'] >= start_date].copy()\n",
    "df.sort_values('date', inplace=True)\n",
    "df.set_index('date', inplace=True)\n",
    "\n",
    "# 重采样（按频率转换）\n",
    "if freq != 'D':\n",
    "    df = df.resample(freq).agg({'open': 'first', 'close': 'last'})\n",
    "    df.dropna(inplace=True)\n",
    "\n",
    "# 添加涨跌幅（百分比）\n",
    "df['涨跌幅'] = df['close'].pct_change() * 100\n",
    "df.dropna(subset=['涨跌幅'], inplace=True)\n",
    "\n",
    "\n",
    "\n",
    "# === 绘图 ===\n",
    "fig, ax = plt.subplots(figsize=(18, 6))\n",
    "\n",
    "# 自动计算直方图区间数\n",
    "min_change = df['涨跌幅'].min()\n",
    "max_change = df['涨跌幅'].max()\n",
    "bins = int((max_change - min_change) / bin_width)\n",
    "n, bins, patches = ax.hist(df['涨跌幅'], bins=bins, rwidth=0.9, edgecolor='black')\n",
    "\n",
    "upper_bound = 1\n",
    "\n",
    "# 筛选在区间内的数据\n",
    "within_range = df[(df['涨跌幅'] >= upper_bound)]\n",
    "\n",
    "# 计算次数和概率\n",
    "count_within_range = len(within_range)\n",
    "total_count = len(df)\n",
    "probability_within_range = count_within_range / total_count\n",
    "\n",
    "# 打印结果\n",
    "print(f\"涨跌幅大于 {upper_bound}% 概率：{probability_within_range:.4f}\")\n",
    "\n",
    "# 设置X轴刻度间距\n",
    "ax.xaxis.set_major_locator(MultipleLocator(bin_width))\n",
    "\n",
    "# 设置颜色：涨（红），跌（绿）\n",
    "for patch in patches:\n",
    "    if patch.get_x() + patch.get_width() / 2 >= 0:\n",
    "        patch.set_facecolor('red')\n",
    "    else:\n",
    "        patch.set_facecolor('green')\n",
    "\n",
    "# 设置标签和标题\n",
    "ax.set_xlabel(\"涨跌幅（%）\", fontsize=12)\n",
    "ax.set_ylabel(\"出现次数\", fontsize=12)\n",
    "ax.set_title(f\"比亚迪（002594）近{years}年 {freq} 级别涨跌幅分布\", fontsize=14)\n",
    "\n",
    "# 设置Y轴为整数\n",
    "ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "\n",
    "# X轴标签旋转\n",
    "plt.xticks(rotation=-90)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
